文档说明:一般情况下,IDE 工具都自带了芯片内部 flash 的烧写算法。而实际项目中往往会有外扩 flash 的需求,在调试或下载程序时,烧写外部flash 则需要额外的 flashloader 程序支持。本文简要介绍如何在 IAR 工具中制作 flashloader 来烧写外部 flash 的原理及实现。
文档说明:在日常一些比较大的项目调试时,一般会通过串口打印许多调试信息,而很多重要信息会隐藏在一些不重要的信息中,如何才能让工程师快捷的看到需要的信息呢?这就是本 LAT 的目的,通过不同颜色区分不同的信息,从而让工程师快速的查看到想要的信息,提高调试效率。
文档说明:在使用 MC SDK 产生基于 STM32H745 工程的过程中可能会遇到一些问题,这边对这些问题做些简要说明,并探讨相关的解决方法。测试用板为 Nucleo-H745ZI。
文档说明:STM32CubeIDE 的工程联调功能太好用了,特别是调试 BOOT 和 APP 的场景下,可 以让大家清楚的看到程序是如何一步一步的从 BOOT 跳转到 APP 的,强烈的视觉冲击, 让人眼前一亮,拨云见日,让 bug 无处遁形。
文档说明:本文通过对除 0 操作的报错机制做细致说明,可以看到整型除 0 可以有Hardfault 的中断产生,而浮点的除 0 只能通过标志位判别,实际使用过程中尽量避免这种错误的操作。
文档说明:大家知道,STM32CubeIDE 是支持“Debug”调试功能的,并且可以快速的得知其快捷键是“F11”。有客户问,这里的“Run”是什么意思呢,其实这里的 Run 是大家理解中的“Download”的含义,就是仅仅下载程序,不进入调试模式。然后就有了今天的主题,既然 Debug 有快捷键,那么 Run 的快捷键是什么呢?是否支持修改呢?答案是肯定有的,并且是可以修改的。
文档说明:由于在 MCU 上运行的应用程序越来越复杂,因此,对于在片外 Flash 运行代码的需求越来越多,特别是针对 Flashless 形态的 MCU 都需要用户自己开发Flashloader, 建议用户可使用与开发板一样的硬件接法。这样,就不必自己去重新开发 Flashloader 了。
文档说明:通常我们使用的 IDE 在调试时都支持在程序运行过程中实时观察窗口内容的功能,当启用这个功能后,实时观察窗口中包含的寄存器或变量的值会被周期性或重复性的进行采样,进而实现窗口内容的实时更新。 但是这个功能使用不当的话可能会导致一些问题,下面我们介绍这样一个外设通讯出错的案例。
文档说明:在伺服变频器应用中,会用到 Singma-Delta ADC 进行采样,这时候如果客户使用到了STM32 自带的 DFSDM(Digital filter for sigma delta modulators)模块进行滤波,后面会与PWM 输出相关起来,这样有 Break 的封波需求,本文就这个功能以及注意事项做说明,使用STM32H723 芯片做测试验证。
文档说明:在产品开发时,经常会碰到在测试过程中或设备出厂后才发现程序异常,但当重新对设备仿真调试时却复现不出现场的问题,或者只通过保存的日志信息艰难分析代码运行到了何处而导致的异常。遇到这种场景,也并非无路可循。原则上只要我们通过仿真器调试时,做到代码不被重新下载覆盖,MCU 不被复位,就可能保留当前程序运行的状态,让 Bug 无处藏身。
文档说明:客户项目中使用的 MCU 型号是 STM32G0B1, 他们反馈在代码中尝试擦除并编程 FLASH时, 发现 FLASH 的状态寄存器显示编程错误(如图 1 所示). 问题是当前代码还没有开始擦除和编程, 怎么就有了编程错误标志了呢 ? 如果不将此错误标志清除, 后续的编程操作无法继续.客户对于每次想要操作 FLASH 之前这个清除动作既感觉多余也感觉别扭, 且还不得不做, 且做了也不知对整个产品的稳定性会有什么样的影响 ?
文档说明:在 STM32 的应用中,SPI 算是用的比较多的外设了,也是单片机最常见外设之一。客户说它执行了关闭 SPI 的代码,竟然会导致 Flash 中的 WRPERR 标志置位,致使应用碰到一些问题。这就奇怪了,SPI 和内部 Flash 看起来是风马牛不相及的事情,为什么会发生这种事呢?一起来看看吧。
文档说明:STM32 G0 系列产品具有丰富的外设和强大的处理性能以及良好的低功耗特性,被广泛用于各类工业产品中,包括一些需要低功耗需求的应用。
文档说明:在对某些不容易复现的问题进行代码调时,需要观察内部时钟的情况,但往往代码之前并没有使能 MCO 功能,在这种情况下就可以使用寄存器直接配置来输出内部时钟到GPIO 脚位上进行观察和测试。下面的例子就是在调试 STM32G474 很难复现的一个问题,调试暂停时,通过 PC 端调试工具直接更改寄存器配置来使能 MCO 功能输出 SYSCLK 到 GPIO 口的方法。
文档说明:客户调试 STM32WLE5JB 样机的时候遇到这样一个问题:在调试 LPUART,不打开外部时钟的时候,能够正常打印,若开启外部的 HSE 和 LSE 后就没有打印。
文档说明:在许多基于 BlueNRG-1/2 系列芯片的低功耗蓝牙的设计项目时,客户通常会在 Flash的特定区域存储定制的数据。然而需要特别注意的是,在 BlueNRG-1/2 方案中,用户对Flash 的读写操作必须在射频空闲的情况下进行,两者是互斥的关系。
文档说明:随着用户的应用越来越复杂以及 GUI 等需要大存储空间的需求越来越多,很多时候我们需要将代码或数据放在外扩的 Flash 存储空间。但是这样存在一个外部 Flash 烧写的问题,尤其是在应用调试时,需要将代码或数据烧录到外部 Flash。如果调试工具不能够一键烧录,势必会给调试带来诸多的麻烦。本文以 STM32H750 芯片为例,介绍通过 KEIL制作 QSPI 接口的外部 Flash 下载算法的方法。
文档说明:客户在使用 STM32G070 的时候,KEIL MDK 为编译工具,当编译优化选项设置为Level0 的时候,程序会出现 Hard Fault 异常,而当编译优化选项设置为 Level1 的时候,则程序运行正常。表面上看,这似乎是 KEIL MDK 的问题,通过分析,导致这个问题的本质原因是内存地址没有对齐引起的,下面章节将详细分析该问题的来龙去脉以及解决方法。
文档说明:NanoEdge™ AI 库是 Cartesiam 推出的人工智能静态库,它可以帮助客户直接生成可以运行在嵌入式 Arm Cortex 处理器上的.a 静态库文件。 2021 年 ST 收购 Cartesiam,完善了 ST 在 AI 领域的生态,大大降低了客户使用 STM32 开发 AI 应用的难度。 通过使用 NanoEdge AI Studio,用户只需要了解基本的 AI 概念,并提供相应的数据,便可以从众多 AI 算法库中智能搜索和生成出最为符合用户应用的算法。
文档说明:当使用一个新的开发板做为基板,使用现有软硬件资源,实现对 MEMS sensors 的评估或工程演示时,往往需要快速地得到直观的评估效果。Unicleo-GUI 是针对运动 MEMS 和环境传感器扩展软件的 GUI,主要功能是演示 MEMS 传感器和算法。LSM6DSO 是一款具有 3D 数字加速计和 3D 数字陀螺仪的 MEMS Sensor。本文针对 NUCLEO-G474RE 平台搭载 LSM6DSO 实现快速效果评估演示的过程进行阐述。
文档说明:本文档主要介绍利用STLINK-V3SET 调试/编程工具的I2C 接口将程序下载到SDRAM 中并执行的方法。
文档说明:在重新编程烧录了STM32H7目标芯片后,我就无法连接到该设备。选择 “Connect under reset”连接也没有帮助。为什么 ?
文档说明:从STM32F0 部分型号开始,比如STM32F04x 和STM32F09x,STM32 越来越多的 型号具有了空片检测(Empty Check)功能。以前,STM32 的启动由BOOT0 和BOOT1来决定,在引入了空片检测功能之后,则在BOOT0=0 的情况下,还需要分两种情况:一是内部已经存在代码,则从用户存储区启动;二是如果是空片,则从系统存储区启动,执行内部Bootloader。它带来什么好处呢?客户如果是空片上板,无需对BOOT0 引脚进行跳线,就可以直接使用内部Bootloader 进行串口
文档说明:越来越多的客户在使用STM32CubeIDE 作为集成开发工具。STM32CubeIDE 在编译代码的时候,用到了链接脚本。通常情况下,STM32CubeIDE 会自动生成默认的链接脚本。但是有些情况下,例如,用户程序需要定义一些特别的段来放置代码或者数据的时候,我们就需要修改链接脚本文件。 最近有客户在修改链接脚本后,编译没有出现问题。但是编译之后生成的BIN 文件很大,导致无法烧录到Flash 中。结合这个问题,本文详细分析一下它的原因以及解决办法。
文档说明:本文详细说明如何结合 CubeMx 与 MC Workbench 生成 workbench 中所未包含芯片的控制程序,客户通过该说明可以使用全系列 STM32 产品用于电机的 FOC 控制,为客户带来便利。
文档说明:本文介绍 TF-A 的架构,代码下载,编译,以及如何烧录到目标板. TF-A: Trusted Firmware for Arm Cortex-A
文档说明:某客户在其产品的设计中,使用了STM32F750Z8T6。客户的代码只需要使用内部Flash,但不知如何对其进行烧写。
文档说明:客户发现使用ST Link Utility对已檫除的STM32L011烧录程序后,用户的应用程序UART功能运行不正确,本文对此问题展开分析。
文档说明:看过另一篇实战经验《STM32F091 空片使用System Bootloader 下载代码》之后,就会知道STM32F091 有一项特殊的功能,就是在空片的情况下既可以使用ST-Link等编程工具进行编程,也可以使用System Memory 中的Bootloader 进行下载代码。这完善了整个编程体系,给用户在编程方案的选择上带来很大的方便。
文档说明:为了更新。ST提供了STLINK,可以通过该工具上的SWIM口进行下载程序,当然在客户的实际使用中,客户也可以按照SWIM的协议,自己去实现类似STLINK的功能。
文档说明:问题: 问题由客户提出,客户在生产调试样机的时候,使用两周后发现几片样机出现VBUS 引脚在不接USB 线的时候有3V 左右的电压的问题。结论:由数据手册AMR 可以看出,我们在设计电路的时候需要避免VIN>(VDD+4.0v)。
文档说明:某客户反应说他们做回来的板子测试发现程序上电就跑飞了,下载都正常。检查了一个礼拜都不知道哪里出了问题,感觉无从下手。
文档说明:某客户在其产品的设计中,使用了STM32F411VET6。客户工程师在开发过程中,尝试使用STM32 ST-LINK Utility 软件配合 ST-LINK 给32F411EDISCOVERY 板上的STM32 加上Level 1 的读保护。工程师发 现,原本在板子上正常运行的代码,加上读保护后,就不运行了。按了板上的RESET 按键也无济于事。
文档说明:某客户和我们反应他们制作回来的板子,能下载程序但是程序执行不了。
文档说明:硬件:STM32F401C-DISCO *2,MCU :STM32F401VCT6 ; 软件:STM32Cube_FW_F4_V1.8.0ProjectsSTM32F401-DiscoveryDemonstrationsEWARM 对于硬件的连接以及运行后的现象,readme.txt中已经说明
文档说明:某客户工程师在某型号新产品的设计中,使用了STM32F103VDT6。据其工程师讲述:在其产品设计中,为 STM32 预留了 JTAG 调试接口。然而,在软件调试时却发现调试器与器件连接失败。所使用的调试器为 ST-Link,通过在开发板测试,确认其功能完好。对 PCB 及电缆做相关的测试,确认 JTAG 的相关信号(TCK、TMS、TDO、TDI、TRST)及电源、地连通完好,并且没有线间短路现象。
文档说明:STM32的CPU采用的是Cortex-M系列的内核(M3或M4),CM3和CM4的调试技能较之普通的单片机有了质的飞跃。一般情况下,CM3的调试功能可被分为两类,侵入式调试与非侵入式调试。
文档说明:有客户反映在用ST-Link调试、下载ST8S系列单片机程序的时候出现了问题, 同一块板子在二十几天前调试均正常,现在重新修改就下载不进去,无法调试。
文档说明:某客户工程师在某型号新产品的设计中,使用了STM32F407VGT6。据其工程师讲述:他想使用MDK 自带的Logic Analyzer功能,在软件仿真的情况下是正常的,但是用仿真器仿真的时候,该功能出现了问题,尝试了很多种配置都没有成功。
文档说明:该问题由某客户提出,发生在STM8SL152R8T6器件上。据其工程师讲述:在安装ST Toolset 和Cosmic编译器之后,使用ST 官网的Demo 程序,在STVP 中连接正常,可以正常烧写。但是当使用STVD+Cosmic 开发环境进行开发时,一点Debug 按钮,就会弹出来对话框:“** Connection error(usb://usb): gdi-error [40201]: can't access configuration database”。